package com.seu.me.test.end;

import com.seu.me.test.end.bill.*;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElements;
import java.util.ArrayList;
import java.util.List;

/**
 * 个人立案事件信息
 *
 * @author liangfeihu
 * @since 2019/10/30 16:06
 */
@Data
@ToString
@NoArgsConstructor
@XmlAccessorType(XmlAccessType.FIELD)
public class CaseInfo {
    private String CaseNo;
    private String AccDate;
    private String ClaimMoney;
    private String AccidentType;
    private String AccResult1;
    private String AccResult2 = "";
    private String HospitalCode = "";
    private String HospitalName;
    private String AccDetailSort = "";
    private String AccidentDetail = "";
    private String ClaimType;
    private String CureDesc = "";
    private String DeathDate = "";
    private String DeformityDate = "";
    private String ProvinceCode = "";
    private String CityCode = "";
    private String CountyCode = "";
    private String AddressDetail = "";
    private String AccdentDesc = "";
    private String SpecialSick = "";
    private String ChronicSick = "";
    private String Remark = "";
    private String copiedMaterialCount = "";
    private String clinical = "";
    private String coverageCode = "";
    private String deductiblePay = "";
    private String doctor = "";
    private String historyIllness = "";
    private String inDays = "";
    private String accidentInfo = "";
    private String critical = "";
    private String disableLevel = "";
    private String disableStandard = "";

    public CaseInfo(String caseNo, String accDate, String claimMoney, String accidentType, String accResult1, String hospitalCode, String hospitalName,
                    String accidentDetail, String claimType, String cureDesc, String deathDate, String deformityDate, String provinceCode, String cityCode,
                    String countyCode, String addressDetail, String copiedMaterialCount, String clinical, String coverageCode, String deductiblePay,
                    String doctor, String historyIllness, String inDays, String accidentInfo, String critical, String disableLevel, String disableStandard) {
        this.CaseNo = caseNo;
        this.AccDate = accDate;
        this.ClaimMoney = claimMoney;
        this.AccidentType = accidentType;
        this.AccResult1 = accResult1;
        this.HospitalCode = hospitalCode;
        this.HospitalName = hospitalName;
        this.AccidentDetail = accidentDetail == null ? "" : accidentDetail;
        this.ClaimType = claimType;
        this.CureDesc = cureDesc == null ? "" : cureDesc;
        this.DeathDate = deathDate == null ? "" : deathDate;
        this.DeformityDate = deformityDate == null ? "" : deformityDate;
        this.ProvinceCode = provinceCode == null ? "" : provinceCode;
        this.CityCode = cityCode == null ? "" : cityCode;
        this.CountyCode = countyCode == null ? "" : countyCode;
        this.AddressDetail = addressDetail;
        this.copiedMaterialCount = copiedMaterialCount;
        this.clinical = clinical == null ? "" : clinical;
        this.coverageCode = coverageCode == null ? "" : coverageCode;
        this.deductiblePay = deductiblePay;
        this.doctor = doctor == null ? "" : doctor;
        this.historyIllness = historyIllness;
        this.inDays = inDays;
        this.accidentInfo = accidentInfo == null ? "" : accidentInfo;
        this.critical = critical == null ? "" : critical;
        this.disableLevel = disableLevel == null ? "" : disableLevel;
        this.disableStandard = disableStandard == null ? "" : disableStandard;
    }

    @XmlElement(name = "DutyInfoList")
    private DutyInfoData dutyInfoData;
    @XmlElement(name = "ESInfoList")
    private ESInfoData eSInfoData;

    /*@XmlElement(name = "BillInfoAList")
    private BillInfoAData billInfoAData;
    @XmlElement(name = "BillInfoBList")
    private BillInfoBData billInfoBData;
    @XmlElement(name = "BillInfoCList")
    private BillInfoCData billInfoCData;
    @XmlElement(name = "BillInfoDList")
    private BillInfoDData billInfoDData;
    @XmlElement(name = "BillInfoEList")
    private BillInfoEData billInfoEData;
    @XmlElement(name = "BillInfoFList")
    private BillInfoFData billInfoFData;
    @XmlElement(name = "BillInfoGList")
    private BillInfoGData billInfoGData;
    @XmlElement(name = "BillInfoHList")
    private BillInfoHData billInfoHData;
    @XmlElement(name = "BillInfoIList")
    private BillInfoIData billInfoIData;*/

    @XmlElement(name = "BillInfoMList")
    private BillInfoMData billInfoMData = new BillInfoMData();

    @XmlElement(name = "BillInfoNList")
    private BillInfoNData billInfoNData = new BillInfoNData();

    /*@XmlElement(name = "BillInfoSCList")
    private BillInfoSCData billInfoSCData;
    @XmlElement(name = "BillInfoZJList")
    private BillInfoZJData billInfoZJData;
    @XmlElement(name = "BillInfoSHSList")
    private BillInfoSHSData billInfoSHSData;
    @XmlElement(name = "BillInfoMYList")
    private BillInfoMYData billInfoMYData;*/

    @XmlElement(name = "ClaimBabyInfoList")
    private ClaimBabyInfoData claimBabyInfoData;

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class DutyInfoData {
        @XmlElements(value = {@XmlElement(name = "DutyInfo", type = DutyInfo.class)})
        List<DutyInfo> dutyInfoList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class ESInfoData {
        @XmlElements(value = {@XmlElement(name = "ESInfo", type = ESInfo.class)})
        List<ESInfo> eSInfoList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class ClaimBabyInfoData {
        @XmlElements(value = {@XmlElement(name = "ClaimBabyInfo", type = ClaimBabyInfo.class)})
        List<ClaimBabyInfo> claimBabyInfoList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoAData {
        @XmlElements(value = {@XmlElement(name = "BillInfoA", type = BillInfoA.class)})
        List<BillInfoA> billInfoAList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoBData {
        @XmlElements(value = {@XmlElement(name = "BillInfoB", type = BillInfoB.class)})
        List<BillInfoB> billInfoBList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoCData {
        @XmlElements(value = {@XmlElement(name = "BillInfoC", type = BillInfoC.class)})
        List<BillInfoC> billInfoCList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoDData {
        @XmlElements(value = {@XmlElement(name = "BillInfoD", type = BillInfoD.class)})
        List<BillInfoD> billInfoDList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoEData {
        @XmlElements(value = {@XmlElement(name = "BillInfoE", type = BillInfoE.class)})
        List<BillInfoE> billInfoEList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoFData {
        @XmlElements(value = {@XmlElement(name = "BillInfoF", type = BillInfoF.class)})
        List<BillInfoF> billInfoFList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoGData {
        @XmlElements(value = {@XmlElement(name = "BillInfoG", type = BillInfoG.class)})
        List<BillInfoG> billInfoGList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoHData {
        @XmlElements(value = {@XmlElement(name = "BillInfoH", type = BillInfoH.class)})
        List<BillInfoH> billInfoHList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoIData {
        @XmlElements(value = {@XmlElement(name = "BillInfoI", type = BillInfoI.class)})
        List<BillInfoI> billInfoIList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoMData {
        @XmlElements(value = {@XmlElement(name = "BillInfoM", type = BillInfoM.class)})
        List<BillInfoM> billInfoMList = new ArrayList<>();
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoNData {
        @XmlElements(value = {@XmlElement(name = "BillInfoN", type = BillInfoN.class)})
        List<BillInfoN> billInfoNList = new ArrayList<>();
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoSCData {
        @XmlElements(value = {@XmlElement(name = "BillInfoSC", type = BillInfoSC.class)})
        List<BillInfoSC> billInfoSCList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoZJData {
        @XmlElements(value = {@XmlElement(name = "BillInfoZJ", type = BillInfoZJ.class)})
        List<BillInfoZJ> billInfoZJList;
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoMYData {
        @XmlElements(value = {@XmlElement(name = "BillInfoMY", type = BillInfoMY.class)})
        List<BillInfoMY> billInfoMYList = new ArrayList<>();
    }

    @Data
    @ToString
    @NoArgsConstructor
    @XmlAccessorType(XmlAccessType.FIELD)
    public static class BillInfoSHSData {
        @XmlElements(value = {@XmlElement(name = "BillInfoSHS", type = BillInfoSHS.class)})
        List<BillInfoSHS> billInfoSHSList;
    }

}
